#include <string>

using namespace std;

class Solution {
public:
    string reverseWords(string s) {
        string r;

        for (int i = s.length() - 1; i >= 0; ) {

            // 忽略空白字符
            while (i >= 0 && s[i] == ' ') {
                i--;
            }
            
            // 找到单词的开头和结束
            int end = i;
            while (i >= 0 && s[i] != ' ') {
                i--;
            }

            int start = i + 1;

            // 单词长度为 0，证明没有单词了
            if (end - start + 1 == 0) {
                return r;
            }

            // 在加单词前，先添加空格
            if (r != "") {
                r += " ";
            }

            r += s.substr(start, end - start + 1);
        }

        return r;
    }
};